Testing has always been a crucial part in development of any product. Unfortunately, in addition to ad-hoc changing business requirements, a pressure to meet strict project deadlines along with dynamic real-time scenarios and, often a product testing is neglected and given less priority. Particularly, while testing, a conventional approach of integration and system testing is predominantly preferred over a unit testing to avoid repetitive test cases creation. If testing is avoided at unit level it often results in cumbersome debugging at unit level for errors detected during integration or system testing.
Traditionally while unit testing, a “Code First and Write Test case Next [CFWN]” approach is employed and thus development and testing frameworks are designed accordingly in compliance with the said approach. This approach, in addition to being time consuming and effort prone, doesn't provide for an integrated environment for testing and development. Thus a developer is forced to switch between integrated development environment IDE's compromising the user friendliness of the environment.
Alternatively, a test driven development (TDD) approach is observed to be efficient in offering greater flexibility to unit testing practice and is adaptable to design an integrated development environment. In one of his findings and while modifying the TDD approach, Mr. Kent Beck of Three Rivers Institute, also observed that TDD and XP suggest that there is no need to add abstraction layers for extensibility until there is actually a need for them. However, still the development community is not sure about exploring this approach because of pertinent issues faced while initiating development itself and lack of such an integrated development platform.
Moreover, in the existing development environment practicing TDD, developers need to manually develop the test cases. One of the systems Zen Test, though discloses automation of the test cases development, however, still faces a problem with reusability of those test cases.
Thus, while choosing TDD for an effective employment of a development process, an automated test case generation system is desirable that would optimize the overall development. In one of the publications, “Wasting Time With Test Driven Development”, Mr. Vineet Sinha of architex acknowledges the shortcomings of the TDD approach, which includes lack of 100% code coverage, absence of user feedback, poor quality of documentation, architectural standards are not maintained and many a times the approach can be a roadblock for innovation.
Even though while aforesaid problems persist with TDD, a dominant and comprehensive advantage of reduced time of work, evolving and adapting to changing environment, simple unit test case generation is believed to be far more beneficial to the development community.
In Code First Test Next (CFTN) approach, post execution, developers need to manually inspect each output file. Moreover, these test cases are not versioned for future reusability; hence there are fair chances of them getting purged over period of time.
Though, there are systems like Xunit.net that provide test cases to comply with TDD for an efficient development, however, these systems don't facilitate combining of various test cases together as a test suite, as such test suit is observed to be effective in triggering a regression testing.
In light of the foregoing problem, there is a need of a robust as well as a structured and user-friendly system of unit/regression testing capable of testing large scale business critical and database centric enterprise applications while complying with all the real-time aspects that arise during testing.